package com.wyd.entity;


import com.wyd.annotations.TtlvField;
import com.wyd.annotations.TtlvField.TtlvType;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

public class DseApplySimReq implements Serializable{
    /**
     *
     */
    private static final long serialVersionUID = -2788012708492951295L;

    @TtlvField(tag = 1, type = TtlvType.UINT16)
    private int channel;

    // 对指定分配、异常拔测无效
    @TtlvField(tag = 2, type = TtlvType.LONG)
    private long group;

    // 正常分配0、正常分配1、享受最优质分配(只对正常申请动作起作用)
    @TtlvField(tag = 3, type = TtlvType.UINT16)
    private int vip;

    // 为了兼容老派卡引擎的userName
    @TtlvField(tag = 4, type = TtlvType.STRING)
    private String skyroamId;

    @TtlvField(tag = 5, type = TtlvType.STRING)
    private String sn;

    @TtlvField(tag = 6, type = TtlvType.STRING)
    private String token;

    @TtlvField(tag = 7, type = TtlvType.UINT16)
    private int serviceType;

    @TtlvField(tag = 8, type = TtlvType.UINT16)
    private int networkType;

    // 52注册的信号(mcc+mnc)
    @TtlvField(tag = 9, type = TtlvType.STRING)
    private String plmn;

    // 终端搜索到的信息列表(mcc+mnc+强度组合)
    @TtlvField(tag = 10, type = TtlvType.STRING)
    private String plmns;

    @TtlvField(tag = 11, type = TtlvType.UINT32)
    private long cellId;

    @TtlvField(tag = 12, type = TtlvType.UINT16)
    private int lac;

    // 正常分配0、重新分配1、指定分配2、拨测分配3、异常拨测分配4
    @TtlvField(tag = 13, type = TtlvType.UINT16)
    private int action;

    // 错误码(重新分配时有值)
    @TtlvField(tag = 14, type = TtlvType.UINT16)
    private int status;

    // imsi(指定分配或重新分配有值)
    @TtlvField(tag = 15, type = TtlvType.STRING)
    private String imsi;

    // 可再次拨测时间(拨测分配有值)
    @TtlvField(tag = 16, type = TtlvType.LONG)
    private long nextDialTime;

    // 如果拨测再次申请，当申请时间超过了此时间，自动为拨测终端换一张卡
    @TtlvField(tag = 17, type = TtlvType.LONG)
    private long nextDialReleaseTime;

    // 指定分配超时时间,单位秒
    @TtlvField(tag = 18, type = TtlvType.INT32)
    private int apointTimeOut;

    // 申请时是否匹配信号（0：不匹配，1：按VSIM信号匹配）
    @TtlvField(tag = 19, type = TtlvType.INT32)
    private int matchSingnal;

    // 申请指定运营商的卡(plmn/networkType/strength)
    @TtlvField(tag = 20, type = TtlvType.STRING)
    private String appointMnc;

    //用户权益
    @TtlvField(tag = 21, type = TtlvType.STRING)
    private String userRights;

    @TtlvField(tag = 22, type = TtlvType.STRING)
    private String longitude;

    @TtlvField(tag = 23, type = TtlvType.STRING)
    private String latitude;

    /**
     * mtk api获取的plmns，格式为46000/46001/46002
     */
    @TtlvField(tag = 24, type = TtlvType.STRING)
    private String realTimePlmnList;

    /**
     * 优先派卡的plmn列表，格式为46000/46001/46002（用在不同场景下）
     */
    @TtlvField(tag = 25, type = TtlvType.STRING)
    private String preferredPlmnList;

    /**
     * 终端版本号
     */
    @TtlvField(tag = 26, type = TtlvType.STRING)
    private String terminalVersion;

    // 是否强制排除已经尝试过的信号
    private int exclusiveReapplyType;

    // 申请动作时的mcc
    private int mcc;

    // 申请动作时的mnc
    private String mnc;

    private String desc;

    //操作类型:1-人工,2-系统
    private int operateType;

    //操作人
    private String operator;

    /**
     * 卡池ID
     */
    private int simPoolId;

    /**
     * Engine申请到的卡组ID
     */
    private List<Integer> simGroupId = new ArrayList<>(3);

    /**
     * 申请卡时实时产品排序
     * @return
     */
    private String productSortResult;

    public String getProductSortResult() {
        return productSortResult;
    }

    public void setProductSortResult(String productSortResult) {
        this.productSortResult = productSortResult;
    }

    public String getRealTimePlmnList() {
        return realTimePlmnList;
    }

    public void setRealTimePlmnList(String realTimePlmnList) {
        this.realTimePlmnList = realTimePlmnList;
    }

    public String getPreferredPlmnList() {
        return preferredPlmnList;
    }

    public void setPreferredPlmnList(String preferredPlmnList) {
        this.preferredPlmnList = preferredPlmnList;
    }

    public int getNetworkType() {
        return networkType;
    }

    public void setNetworkType(int networkType) {
        this.networkType = networkType;
    }

    public String getSkyroamId() {
        return skyroamId;
    }

    public void setSkyroamId(String skyroamId) {
        this.skyroamId = skyroamId;
    }

    public long getGroup() {
        return group;
    }

    public void setGroup(long group) {
        this.group = group;
    }

    public String getSn() {
        return sn;
    }

    public void setSn(String sn) {
        this.sn = sn;
    }

    public int getServiceType() {
        return serviceType;
    }

    public void setServiceType(int serviceType) {
        this.serviceType = serviceType;
    }

    public String getPlmn() {
        return plmn;
    }

    public void setPlmn(String plmn) {
        this.plmn = plmn;
    }

    public String getPlmns() {
        return plmns;
    }

    public void setPlmns(String plmns) {
        this.plmns = plmns;
    }

    public long getCellId() {
        return cellId;
    }

    public void setCellId(long cellId) {
        this.cellId = cellId;
    }

    public int getLac() {
        return lac;
    }

    public void setLac(int lac) {
        this.lac = lac;
    }

    public int getAction() {
        return action;
    }

    public void setAction(int action) {
        this.action = action;
    }

    public int getStatus() {
        return status;
    }

    public void setStatus(int status) {
        this.status = status;
    }

    public String getImsi() {
        return imsi;
    }

    public void setImsi(String imsi) {
        this.imsi = imsi;
    }

    public long getNextDialTime() {
        return nextDialTime;
    }

    public void setNextDialTime(long nextDialTime) {
        this.nextDialTime = nextDialTime;
    }

    public int getVip() {
        return vip;
    }

    public void setVip(int vip) {
        this.vip = vip;
    }

    public int getChannel() {
        return channel;
    }

    public void setChannel(int channel) {
        this.channel = channel;
    }

    public int getMcc() {
        return mcc;
    }

    public void setMcc(int mcc) {
        this.mcc = mcc;
    }

    public String getMnc() {
        return mnc;
    }

    public void setMnc(String mnc) {
        this.mnc = mnc;
    }

    public String getToken() {
        return token;
    }

    public void setToken(String token) {
        this.token = token;
    }

    public long getNextDialReleaseTime() {
        return nextDialReleaseTime;
    }

    public void setNextDialReleaseTime(long nextDialReleaseTime) {
        this.nextDialReleaseTime = nextDialReleaseTime;
    }

    public int getApointTimeOut() {
        return apointTimeOut;
    }

    public void setApointTimeOut(int apointTimeOut) {
        this.apointTimeOut = apointTimeOut;
    }

    public String getDesc() {
        return desc;
    }

    public void setDesc(String desc) {
        this.desc = desc;
    }

    public int getMatchSingnal() {
        return matchSingnal;
    }

    public void setMatchSingnal(int matchSingnal) {
        this.matchSingnal = matchSingnal;
    }

    public String getAppointMnc() {
        return appointMnc;
    }

    public void setAppointMnc(String appointMnc) {
        this.appointMnc = appointMnc;
    }

    public int getExclusiveReapplyType() {
        return exclusiveReapplyType;
    }

    public void setExclusiveReapplyType(int exclusiveReapplyType) {
        this.exclusiveReapplyType = exclusiveReapplyType;
    }

    public String getUserRights() {
        return userRights;
    }

    public void setUserRights(String userRights) {
        this.userRights = userRights;
    }

    public String getLongitude() {
        return longitude;
    }

    public void setLongitude(String longitude) {
        this.longitude = longitude;
    }

    public String getLatitude() {
        return latitude;
    }

    public void setLatitude(String latitude) {
        this.latitude = latitude;
    }

    public int getSimPoolId() {
        return simPoolId;
    }

    public void setSimPoolId(int simPoolId) {
        this.simPoolId = simPoolId;
    }

    public List<Integer> getSimGroupId() {
        return simGroupId;
    }

    public void setSimGroupId(List<Integer> simGroupId) {
        this.simGroupId = simGroupId;
    }

    public String getTerminalVersion() {
        return terminalVersion;
    }

    public void setTerminalVersion(String terminalVersion) {
        this.terminalVersion = terminalVersion;
    }

    public int getOperateType() {
        return operateType;
    }

    public void setOperateType(int operateType) {
        this.operateType = operateType;
    }

    public String getOperator() {
        return operator;
    }

    public void setOperator(String operator) {
        this.operator = operator;
    }

    @Override
    public String toString() {
        return "DseApplySimReq{" +
                "channel=" + channel +
                ", group=" + group +
                ", vip=" + vip +
                ", skyroamId='" + skyroamId + '\'' +
                ", sn='" + sn + '\'' +
                ", token='" + token + '\'' +
                ", serviceType=" + serviceType +
                ", networkType=" + networkType +
                ", plmn='" + plmn + '\'' +
                ", plmns='" + plmns + '\'' +
                ", cellId=" + cellId +
                ", lac=" + lac +
                ", action=" + action +
                ", status=" + status +
                ", imsi='" + imsi + '\'' +
                ", nextDialTime=" + nextDialTime +
                ", nextDialReleaseTime=" + nextDialReleaseTime +
                ", apointTimeOut=" + apointTimeOut +
                ", matchSingnal=" + matchSingnal +
                ", appointMnc='" + appointMnc + '\'' +
                ", userRights='" + userRights + '\'' +
                ", longitude='" + longitude + '\'' +
                ", latitude='" + latitude + '\'' +
                ", realTimePlmnList='" + realTimePlmnList + '\'' +
                ", preferredPlmnList='" + preferredPlmnList + '\'' +
                ", exclusiveReapplyType=" + exclusiveReapplyType +
                ", mcc=" + mcc +
                ", mnc='" + mnc + '\'' +
                ", desc='" + desc + '\'' +
                ", simPoolId=" + simPoolId +
                ", simGroupId=" + simGroupId +
                ", terminalVersion=" + terminalVersion +
                ", operateType=" + operateType +
                ", operator=" + operator +
                '}';
    }
}
